/**
 * interface IUtilisateur
 * Représente un utilisateur de l'application
 * @version 1.0
 * @author mimau
 * 
 * Changelog:
 *	1.0:	main release
 */
package interfaces
{
	public interface IUtilisateur{
		//propriétés
		var _id:int;
		var _nom:String;
		var _prenom:String;
		var _identifiants:Identifiant;
		var _coordonnees:Coordonnee;
		var _dateNaissance:Date;
		
		//fonctions
		/**
		 * Ajoute un utilisateur.
		 *@param pUser l'objet IUtilisateur à ajouter.
		 *@return un boolean exprimant le succès de l'insertion.
		 */
		function ajouter(pUser:IUtilisateur):Boolean;
		
		/**
		 * Modifie un utilisateur
		 *@param pId l'id de l'utilisateur à modifier.
		 *@param pUser l'objet IUtilisateur portant les modifications.
		 *@return un boolean exprimant le succès de la modification.
		 */
		function modifier(pId:int,pUser:IUtilisateur):Boolean;
		
		/**
		 * Supprime un utilisateur
		 *@param pId l'id de l'utilisateur à supprimer.
		 *@return un boolean exprimant le succès de la suppression.
		 */
		function supprimer(pId:int):Boolean;
		
		/**
		 * Ajoute un utilisateur
		 *@param pId l'id de l'utilisateur à rechercher.
		 *@return l'objet utilisateur trouvé
		 */
		function rechercher(pId:int):IUtilisateur;
		
		/**
		 * Liste tous les utilisateurs.
		 *@return une liste d'objets utilisateurs
		 */
		function lister():IUtilisateur[];
		
		/**
		 * Liste tous les utilisateurs.
		 *@param pRestrict une String de restriction de listage.
		 *@return une liste d'objets utilisateurs correspondants à la condition de restriction
		 */
		function lister(pRestrict:String):IUtilisateur[];
	}
}